package com.chenfan.mcn.model.dto;

import com.chenfan.mcn.model.DocIntentionOrder;
import com.chenfan.mcn.utils.CommonUtil;
import com.chenfan.privilege.common.constant.DataPrivilegeInfo;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * @author wulg
 * @date 2022/10/27
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class IntentionOrderSearchDTO extends AbstractMcnPrivilegeDTO<DocIntentionOrder> {

    private String intentionCode;

    /**
     * 单据状态：0_草稿、 1_待接单、2_已拒单、3_待锁档、4_待AE接收、 5_执行中、6_已完结、7_已作废
     */
    private List<Integer> status;

    /**
     * 客户id
     */
    private List<Long> customerIds;

    /**
     *  发布平台ID（数据字典）
     */
    private List<String> platFormIds;

    /**
     * 红人平台id
     */
    private List<String> starPlatformInfoIds;

    /**
     * 红人平台昵称
     */
    private String platNickName;

    /**
     * 红人id
     */
    private List<Long> starIds;

    /**
     * 创建时间-开始
     */
    private Date createDateStart;

    /**
     * 创建时间-结束
     */
    private Date createDateEnd;

    /**
     * 创建人
     */
    private String createName;

    /**
     * 发布日期-开始
     */
    private Date publishDateStart;

    /**
     * 发布日期-结束
     */
    private Date publishDateEnd;

    /**
     * 发布形式（数据字典Release_form）
     */
    private List<String> publishForms;

    /**
     * 是否创建收入合同 1:有 0：没有
     */
    private Integer contractType;

    /**
     * 执行人姓名
     */
    private String excutorName;

    /**
     * 经纪人姓名
     */
    private String starAgentName;

    /**
     * 品牌
     */
    private List<String> cooperationBrands;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 执行人
     */
    private List<Long> excutorIds;

    private boolean check;

    @SuppressWarnings("AlibabaPojoNoDefaultValue")
    private Long pageNum = 1L;

    @SuppressWarnings("AlibabaPojoNoDefaultValue")
    private Long pageSize = 10L;
    /**
     * 执行单ID列表
     */
    private List<Long> excutionOrderIds;

    /**
     * 执行时间-开始
     */
    private Date executeTimeStart;

    /**
     * 执行时间-结束
     */
    private Date executeTimeEnd;

    /**
     * 我司合同主体id
     */
    private Long contractingId;

    @Override
    protected void extendDataPrivilege(StringBuilder sb, String[] dataScops) {
        sb.append("( (1= 1) ");
        //公司或子公司-数据权限过滤
        if (CommonUtil.anyEqualsIgnoreCase(dataScops, DataPrivilegeInfo.COMPANY, DataPrivilegeInfo.SUB_COMPANY)) {
            this.extendCompanyPrivilege(sb);
        }
        sb.append(")");
    }

}
